<?php
// 数据库类
class Model{
    // 属性
    public $tname; //表名
    public $mysqli; //数据库标识
    public $field; //字段
    public $where; //条件
    public $order; //排序依据    
    public $limit; //分页条件
    public $insert; //插入数据

    // 构造函数
    function __construct($tname){
        $this->name=$tname; //表名
        // 连接数据库
        $this->mysqli=new mysqli(HOST,USER,PSWD,DBNAME);
        if($this->mysqli->connect_error){
            die('数据库连接出错'.$this->mysqli->connect_error);
        }
    }

    // 方法
    // 字段
    function field($field){
        $this->field=$field;
        return $this;
    }
    // 条件
    function where($where){
        $this->where='where '.$where;
        return $this;
    }
    // 排序
    function order($order){
        $this->order='order by '.$order;
        return $this;
    }
    // 插入
    function insert($insert){
        $this->insert=$insert;
        return $this;
    }
    // 分页类
    function limit($limit){
        $this->limit=$limit;
        return $this;
    }
    // 清除属性值
    function clearAttr(){
        unsert($this->field);
        unsert($this->where);
        unsert($this->order);
        unsert($this->limit);
        unsert($this->insert);
    }
    // 增、删、改、查组合
    // 查询
    function select(){
        if(isset($this->field)){
            $sql="select {$this->field} from {$this->tname} {$this->where} {$this->order} {$this->limit}";
        }else{
            $sql="select * from {$this->tname} {$this->where} {$this->order} {$this->limit}";
        }
        $this->clearAttr(); //sql语句组合完毕，即可清除属性值
        $rst=$this->mysqli->query($sql); //执行sql

        // 组合二维数组
        while($row=$rst->fetch_assoc()){
            $rows[]=$row;
        }
        return $rows; //返回二维数组
    }
    // 删除
    function delete(){
        $sql="delete from {$this->tname} {$this->where}";
        $this->clearAttr();
        // 执行sql语句，成功返回影响行数
        if($this->mysqli->query($sql)){
            return $this->mysqli->affected_rows;
        }else{
            return false;
        }
    }
    // 增加
    function add(){
        $sql="insert into {$this->tname}({$this->field}) values({$this->$insert})";
        $this->clearAttr();
        // 执行sql成功返回影响行数
        if($this->mysqli->query($sql)){
            return $this->mysqli->affected_rows;
        }else{
            return false;
        }
    }
    // 更新
    function update(){
        $sql="update {$this->tname} set {$this->field} {$this->where}";
        $this->clearAttr();
        // 执行sql成功返回影响函数
        if($this->mysqli->query($sql)){
            return $this->mysqli->affected_rows;
        }else{
            return false;
        }
    }

}
?>